Skip to main content

Todo Completed

This webhook is triggered when an applicant completes a requested todo item, such as identity verification (IDV), bank account connection, income document submission, or other customer-facing tasks.

Configuration​

To receive this webhook, you must configure both:

  1. Callback URL: Set the todoCompleted callback URL in your integration settings.
  2. Enabled Categories: Optionally specify which todo categories should trigger the webhook via todoCompletedWebhook.enabledCategories in your integration capabilities. If not specified, all categories will trigger the webhook.

Available Categories​

  • IDV - Primary applicant identity verification completed
  • SECONDARY_IDV - Co-applicant identity verification completed
  • BANK_ACCOUNT - Bank account connection completed
  • INCOME - Income documents submitted
  • SIN - Social Insurance Number submitted
  • APPLICATION - Application details (personal and employment) completed
  • CONSENT_TO_PULL_CREDIT - Consent to pull credit granted
  • IDENTITY - Identity documents uploaded

Request Body​

The request body is a JSON object with the following properties:

  • applicationId (string, uuid, required): The ID of the application.
  • applicantId (string, uuid, required): The ID of the applicant who completed the todo.
  • todoCategory (string, enum, required): The category of the completed todo. One of: IDV, SECONDARY_IDV, BANK_ACCOUNT, INCOME, SIN, APPLICATION, CONSENT_TO_PULL_CREDIT, IDENTITY.
  • completedAt (string, date-time, required): The timestamp when the todo was completed.
  • retailerId (string, uuid, required): The ID of the retailer associated with the application.

Example Request Body​

{
"applicationId": "3aad1c88-a898-460f-b2c7-5f4145250489",
"applicantId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"todoCategory": "IDV",
"completedAt": "2026-01-08T15:30:00.000Z",
"retailerId": "ebed869d-bdf4-4b0a-8442-5b8f23753247"
}

Response​

We ask that all webhooks return 200 OK status codes to confirm receipt of the webhook. We ask that unless the server is down errors to be logged and still return a 200 OK status code. If the webhook does not return a 200 OK status code, we will retry the webhook up to 10 times with an exponential backoff.